package com.class04.base;

import org.junit.Test;
import redis.clients.jedis.Jedis;

import java.util.Set;

/**
 * @ClassDescription:
 * @JdkVersion: 17
 * @Author: yxy
 * @Created: 2024/1/3 14:32
 */
public class TestString {
    private static Jedis jedis;

    static {
        jedis = new Jedis("127.0.0.1", 6379);
    }

    @Test
    public void test1() {

//        清空数据
        jedis.flushDB();
        System.out.println("======增加数据========");
        System.out.println(jedis.set("key1", "value1"));
        System.out.println(jedis.set("key2", "value2"));
        System.out.println(jedis.set("key3", "value3"));
        System.out.println("删除key2：" + jedis.del("key2"));
        System.out.println("获取key3：" + jedis.get("key3"));
        System.out.println("更新key1：" + jedis.set("key1", "valuenew"));
        System.out.println("在key1后面追加valueappend：" + jedis.append("key1", "valueappend"));
    }

    @Test
    public void test2() {
//        keys * 获取所有的key
        Set<String> keys = jedis.keys("*");
        keys.stream().iterator().forEachRemaining(System.out::println);
//	     GET key
//      获取指定 key 的值。
        String key1 = jedis.get("key1");
        System.out.println("key1 = " + key1);
//        GETRANGE key start end
//        返回 key 中字符串值的子字符
        System.out.println(jedis.getrange("key1", 5, 7));
//        	GETSET key value
//将给定 key 的值设为 value ，并返回 key 的旧值(old value)。
        System.out.println(jedis.getSet("key1", "value1"));
        System.out.println("=======================");
//        MGET key1 [key2..]
//        获取所有(一个或多个)给定 key 的值。
        System.out.println(jedis.mget("key1", "key3"));
//SETEX key seconds value
//将值 value 关联到 key ，并将 key 的过期时间设为 seconds (以秒为单位)。
        System.out.println(jedis.setex("key1", 10, "value1"));

    }

    @Test
    public void test3() {
//        	SETNX key value
//只有在 key 不存在时设置 key 的值。
        System.out.println(jedis.setnx("key1", "value2"));

//        STRLEN key
//返回 key 所储存的字符串值的长度。
        System.out.println(jedis.get("key1"));
        System.out.println(jedis.strlen("key1"));

//        MSET key value [key value ...]
//        同时设置一个或多个 key-value 对。
        System.out.println(jedis.mset("key4", "value4", "key5", "value5"));
        System.out.println(jedis.mget("key4", "key5"));
//        INCR key
//将 key 中储存的数字值增一。
        System.out.println(jedis.setnx("a1", "1"));
        System.out.println(jedis.incr("a1"));
//        DECR key
//     将 key 中储存的数字值减一。
        System.out.println(jedis.decr("a1"));

    }
    @Test
    public void test4(){
//	DECRBY key decrement
//key 所储存的值减去给定的减量值（decrement） 。
//        System.out.println(jedis.decrBy("a1", 1));


//        	APPEND key value
//如果 key 已经存在并且是一个字符串， APPEND 命令将指定的 value 追加到该 key 原来值（value）的末尾。
        System.out.println(jedis.append("a1", "111111111"));
        System.out.println(jedis.get("a1"));

    }


}
